package structures.sort;

import java.util.Arrays;
import java.util.Random;

// 冒泡排序
public class BubbleSortDemo {
    private static final int LENGTH = 6;

    public static void main(String[] args) {
        // 生成数据
        int[] data = new int[LENGTH];
        for (int index = 0; index < data.length; index++) {
            data[index] = (int) (Math.random() * LENGTH);
        }

        // 打印数据
        System.out.println(Arrays.toString(data));

        long startTime = System.currentTimeMillis();
        bubble(data);
        System.out.println("----------------消耗时间: " + (System.currentTimeMillis() - startTime) + " ms------------");


        // 打印数据
        System.out.println(Arrays.toString(data));
    }


    /**
     * 官方排序 做了优化  如果一次排序中没有调整数据 则认为顺序已经ok
     * @param data
     */
    private static void bubble(int[] data) {
        boolean flag = false;
        for (int i = 0; i < data.length - 1; i++) {
            flag = false;
            for (int j = 0; j < data.length - 1 - i; j++) {
                if (data[j] > data[j + 1]) {
                    flag = true;
                    int temp = data[j + 1];
                    data[j + 1] = data[j];
                    data[j] = temp;
                }
            }

            if (!flag) {
                System.out.println("---这次操作没有需要交换的数据   所以我就直接退出啦---");
                return;
            };
        }
    }

}
